package juego.vistas;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;

import javax.imageio.ImageIO;

import principal.Constantes;

import juego.IAnimado;

import ar.uba.fi.algo3.titiritero.Posicionable;
import ar.uba.fi.algo3.titiritero.SuperficieDeDibujo;
import ar.uba.fi.algo3.titiritero.vista.Imagen;

public abstract class VistaAnimada extends Imagen implements IVista {
	private ArrayList<BufferedImage> imagenes;	
	private IAnimado animado;

	public VistaAnimada(SuperficieDeDibujo superficie, IAnimado animado) {	
		this.setPosicionable((Posicionable)animado);
		this.animado = animado;		
		imagenes = new ArrayList<BufferedImage>();
	}		
	
	public void dibujar(SuperficieDeDibujo superficeDeDibujo) {
		int x = Math.round((float)(getPosicionable().getX() * Constantes.TAMANIO_CASILLA));
		int y = Math.round((float)(getPosicionable().getY() * Constantes.TAMANIO_CASILLA));

		Graphics grafico = (Graphics)superficeDeDibujo.getBuffer();
		//System.out.println(getProximaImagen());
		BufferedImage img = imagenes.get(getProximaImagen());		
		grafico.drawImage(img, x, y, null);
	}

	public void agregarImagen(String nombreArchivoImagenArriba) {		
		imagenes.add(cargarImagen(nombreArchivoImagenArriba));
	}
	
	private BufferedImage cargarImagen(String nombreArchivoImagen) {
		BufferedImage img = null;
		try {
			File f = new File(nombreArchivoImagen);			
			img = ImageIO.read(f);			
		} catch(Exception ex) {
			System.out.println("Error cargando la imagen: " + nombreArchivoImagen);
		}	
		return img;
	}
	
	public abstract int getProximaImagen();
}
